Page({
  data: {
    // 添加记录弹窗类型选择
    showAddRecordDialog: false,
    // 新增：记录类型的选项列表
    recordTypes: ['全部', '检查', '治疗', '洗牙', '护理'],
    // 新增：当前选中的类型（默认显示“请选择类型”）
    selectedType: '',
    // 新增：临时存储弹窗输入的内容
    tempRecord: {
      type: '', // 记录类型
      date: '', // 日期
      remark: '' // 备注
    },
    // 记录列表
    active: 0, // 默认选中第0个标签（全部）
    all: [{
        id: 1,
        title: "记录1",
        time: "2025-11-09"
      },
      {
        id: 2,
        title: "记录2",
        time: "2025-11-09"
      },
      {
        id: 3,
        title: "记录3",
        time: "2025-11-09"
      }
    ],
    select: [{
        id: 4,
        title: "1",
        time: "2025-11-09"
      },
      {
        id: 5,
        title: "2",
        time: "2025-11-09"
      },
      {
        id: 6,
        title: "3",
        time: "2025-11-09"
      }
    ],
    treat: [{
        id: 7,
        title: "1",
        time: "2025-11-09"
      },
      {
        id: 8,
        title: "2",
        time: "2025-11-09"
      },
      {
        id: 9,
        title: "3",
        time: "2025-11-09"
      }
    ],
    wash: [{
        id: 10,
        title: "1",
        time: "2025-11-09"
      },
      {
        id: 11,
        title: "2",
        time: "2025-11-09"
      },
      {
        id: 12,
        title: "",
        time: "2025-11-09"
      }
    ],
    protect: [ // 热销好评
      {
        id: 13,
        title: "",
        time: "2025-11-09"
      },
      {
        id: 14,
        title: "2",
        time: "2025-11-09"
      },
      {
        id: 15,
        title: "3",
        time: "2025-11-09"
      }
    ],
    currentProducts: [], // 当前显示的记录列表
    // 记录展开状态（默认都不展开）
    recordExpanded: [false, false, false],
    // 弹窗控制
    showUpdateDialog: false,
    showAddRecordDialog: false,
    showAppointmentDialog: false,
    showReportPreview: false,
    // 预约类型
    appointmentType: ''
  },

  onLoad() {
    // 初始化健康评分图表
    this.initHealthChart();
    this.setData({
      currentProducts: this.data.all
    });
  },

  switchTab(e) {
    const index = e.currentTarget.dataset.index;
    const typeArr = ['all', 'select', 'treat', 'wash', 'protect'];
    const currentKey = typeArr[index];

    // 如果是“全部”标签，合并所有类型的记录
    let currentProducts;
    if (currentKey === 'all') {
      currentProducts = [
        ...this.data.select,
        ...this.data.treat,
        ...this.data.wash,
        ...this.data.protect
      ];
    } else {
      currentProducts = this.data[currentKey];
    }

    this.setData({
      active: index,
      currentProducts: currentProducts
    });
  },

  onChangeTab: function (e) {
    const index = e.currentTarget.dataset.index;
    let products = [];
    // 根据标签索引切换数据
    if (index === 0) {
      products = this.data.all;
    } else if (index === 1) {
      products = this.data.select;
    } else if (index === 2) {
      products = this.data.treat;
    } else if (index === 3) {
      products = this.data.wash;
    } else if (index === 4) {
      products = this.data.protect;
    }
    // 更新显示
    this.setData({
      active: index,
      currentProducts: products
    });
  },

  // 初始化健康评分图表
  initHealthChart() {
    const ctx = wx.createCanvasContext('healthScoreChart', this);
    const radius = 50; // 半径
    const centerX = 60; // 中心X坐标
    const centerY = 60; // 中心Y坐标
    const startAngle = -Math.PI / 2; // 起始角度（顶部）

    // 绘制背景圆环
    ctx.beginPath();
    ctx.arc(centerX, centerY, radius, startAngle, startAngle + Math.PI * 2, false);
    ctx.setLineWidth(10);
    ctx.setStrokeStyle('#E8F4F8');
    ctx.stroke();

    // 绘制进度圆环（85%）
    const progress = 0.85;
    ctx.beginPath();
    ctx.arc(centerX, centerY, radius, startAngle, startAngle + Math.PI * 2 * progress, false);
    ctx.setLineWidth(10);
    ctx.setStrokeStyle('#2D7D9A');
    ctx.stroke();

    ctx.draw();
  },

  // 切换记录展开/折叠状态（修正数组复制方式）
  toggleRecord(index) {
    // 改用slice()复制数组，避免使用扩展运算符
    const newState = this.data.recordExpanded.slice();
    newState[index] = !newState[index];
    this.setData({
      recordExpanded: newState
    });
  },

  // 显示/隐藏更新信息弹窗
  showUpdateDialog() {
    this.setData({
      showUpdateDialog: true
    });
  },
  hideUpdateDialog() {
    this.setData({
      showUpdateDialog: false
    });
  },

  // 显示/隐藏添加记录弹窗
  showAddRecordDialog() {
    this.setData({
      showAddRecordDialog: true
    });
  },
  hideAddRecordDialog() {
    this.setData({
      showAddRecordDialog: false
    });
  },
  // 日期输入事件
  onDateInput(e) {
    this.setData({
      'tempRecord.date': e.detail.value
    });
  },

  // 备注输入事件
  onRemarkInput(e) {
    this.setData({
      'tempRecord.remark': e.detail.value
    });
  },

  // 保存记录
  saveRecord() {
    const {
      tempRecord,
      all,
      select,
      treat,
      wash,
      protect,
      active
    } = this.data;
    const typeMap = { // 类型与数据数组的映射（对应data中的all/select/treat等）
      '全部': 'all',
      '检查': 'select',
      '治疗': 'treat',
      '洗牙': 'wash',
      '护理': 'protect'
    };

    // 简单校验：类型和日期不能为空
    if (!tempRecord.type || !tempRecord.date) {
      wx.showToast({
        title: '请选择类型和日期',
        icon: 'none'
      });
      return;
    }

    // 生成新记录（id自增，title用备注，time用日期）
    const typeKey = typeMap[tempRecord.type];
    const newRecord = {
      id: Date.now(), // 用时间戳做唯一id
      title: tempRecord.remark || '无备注', // 备注为空时显示“无备注”
      time: tempRecord.date
    };

    // 把新记录添加到对应的数组中（如：类型是“检查”，就添加到select数组）
    const targetList = this.data[typeKey];
    targetList.unshift(newRecord); // 新增记录放在列表最前面

    // 更新数据（同时刷新currentProducts，保证当前标签页实时显示）
    this.setData({
      [typeKey]: targetList, // 更新对应类型的数组
      currentProducts: active === 0 ? [...this.data.all, newRecord] : this.data.currentProducts // 如果当前是“全部”标签，同步更新currentProducts
    });

    // 如果当前选中的是“全部”标签，需要单独更新all数组
    if (typeKey !== 'all') {
      const newAll = [...all, newRecord];
      this.setData({
        all: newAll,
        currentProducts: active === 0 ? newAll : this.data.currentProducts
      });
    }

    // 关闭弹窗 + 重置临时数据
    this.setData({
      showAddRecordDialog: false,
      tempRecord: {
        type: '',
        date: '',
        remark: ''
      },
      selectedType: ''
    });

    wx.showToast({
      title: '记录添加成功',
      icon: 'success'
    });
  },

  // 选择类型时，同步更新tempRecord的type
  bindTypeChange(e) {
    const index = e.detail.value;
    const selectedType = this.data.recordTypes[index];
    this.setData({
      selectedType: selectedType,
      'tempRecord.type': selectedType // 新增：同步到临时记录
    });
  },



  // 显示预约弹窗
  showAppointmentDialog(e) {
    // 从 data-type 属性获取预约类型，更可靠的方式
    const type = e.currentTarget.dataset.type;
    this.setData({
      showAppointmentDialog: true,
      appointmentType: type
    });
  },
  hideAppointmentDialog() {
    this.setData({
      showAppointmentDialog: false
    });
  },

  // 确认预约
  confirmAppointment() {
    wx.showToast({
      title: '预约成功',
      icon: 'success',
      duration: 2000
    });
    this.hideAppointmentDialog();
  },

  // 预览报告
  previewReport() {
    this.setData({
      showReportPreview: true
    });
  },
  hideReportPreview() {
    this.setData({
      showReportPreview: false
    });
  }
});